#include <iostream>
#include <future>
#include <thread>
int Add(int num1, int num2)
{
    std::cout << "Add\n";
    return num1 + num2;
}
int main()
{
    // 实例化
    std::promise<int> pro;
    // 获取关联对象
    std::future<int> res = pro.get_future();
    // 任意位置执行
    std::thread thr([&pro]()
                    { int sum = Add(11, 22);pro.set_value(sum);//存到这个promise
                         });

    std::cout << res.get() << std::endl;
    thr.join();
    return 0;
}
//注意:避免这个promise的作用域被释放了---智能指针解决